﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;

namespace vudu.PaginasWeb.G2Horario
{
    public partial class consultarPreMatricula : System.Web.UI.Page
    {
        #region Atributos

            private int _idPreMatriculaSelected;
            private Estudiante _estudianteActual;
            private TableRow _newRow;
            private TableCell _newCell;
            private Label _newLabel;
            private List<string> _diasSemana;

        #endregion FinAtributos

        #region Metodos

            protected void InitSecure()
            {
                string miRol = (string)Session["rol"];
                if (miRol != "Estudiante")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");

                //Session["rol"] = "";
                _estudianteActual = new Estudiante();
                _estudianteActual = (Estudiante)Session["usuario"];
                if (_estudianteActual.ExistPreMatriculaActiva())
                {
                    btnModifyPreMatricula.Enabled = false;
                    btnModifyPreMatricula.Visible = false;
                    btnBackPreMatricula.Visible = false;
                    btnBackPreMatricula.Enabled = false;
                    btnBackPreMatriculaV2.Enabled = true;
                    btnBackPreMatriculaV2.Visible = true;
                }
                else
                {
                    btnModifyPreMatricula.Enabled = true;
                    btnModifyPreMatricula.Visible = true;
                    btnBackPreMatricula.Visible = true;
                    btnBackPreMatricula.Enabled = true;
                    btnBackPreMatriculaV2.Enabled = false;
                    btnBackPreMatriculaV2.Visible = false;
                }
            }

            public void LoadCells(SeccionMateria miSeccion)
            {
                _newCell = new TableCell();
                _newCell.Width = 400;
                _newCell.HorizontalAlign = HorizontalAlign.Left;
                _newCell.BorderWidth = 1;
                _newRow.Cells.Add(_newCell);
                _newLabel = new Label();
                miSeccion.HorasClase.Sort(delegate(HorarioDeClase miHorario1, HorarioDeClase miHorario2)
                {
                    return miHorario1.Dia.CompareTo(miHorario2.Dia);
                });
                foreach (HorarioDeClase miHorario in miSeccion.HorasClase)
                {
                    LoadLabels(miHorario);                                  
                }
                _newCell.Controls.Add(_newLabel);
            }

            protected void LoadLabels(HorarioDeClase miHorario)
            {
                string minuteIni;
                string minuteFin;

                if (miHorario.HoraInicio.Minute.ToString().Length < 2)
                    minuteIni = "0" + miHorario.HoraInicio.Minute.ToString();
                else
                    minuteIni = miHorario.HoraInicio.Minute.ToString();

                if (miHorario.HoraFin.Minute.ToString().Length < 2)
                    minuteFin = "0" + miHorario.HoraFin.Minute.ToString();
                else
                    minuteFin = miHorario.HoraFin.Minute.ToString();

                _newLabel.Text += miHorario.Dia + ": " + miHorario.HoraInicio.Hour.ToString() + ":" +
                                    minuteIni + " a " + miHorario.HoraFin.Hour.ToString() + ":" + minuteFin +
                                    " en " + miHorario.SalonDeClase.Nombre +  " .    ";
            }

            public void LoadPractices(Practica myPractice)
            {
                _newRow = new TableRow();
                tablePreMatricula.Rows.Add(_newRow);
                _newCell = new TableCell();
                _newCell.Width = 200;
                _newCell.HorizontalAlign = HorizontalAlign.Left;
                _newCell.BorderWidth = 1;
                _newRow.Cells.Add(_newCell);
                _newLabel = new Label();
                _newLabel.Text = "<b>" + myPractice.NombrePractica + "</b><br />" +
                                    myPractice.profesor.Nombre + "&nbsp" + myPractice.profesor.Apellido;
                _newCell.Controls.Add(_newLabel);

                _newCell = new TableCell();
                _newCell.Width = 400;
                _newCell.HorizontalAlign = HorizontalAlign.Left;
                _newCell.BorderWidth = 1;
                _newRow.Cells.Add(_newCell);
                _newLabel = new Label();
                myPractice.horarioDeClase.Sort(delegate(HorarioDeClase miHorario1, HorarioDeClase miHorario2)
                {
                    return miHorario1.Dia.CompareTo(miHorario2.Dia);
                });
                foreach (HorarioDeClase miHorario in myPractice.horarioDeClase)
                {
                    LoadLabels(miHorario);
                }
                _newCell.Controls.Add(_newLabel);
            }

            public void LoadRows(HorarioPreMatricula miPreMatriculaSeleccionada)
            {
                foreach (SeccionMateria misSecciones in miPreMatriculaSeleccionada.ListaSecciones)
                {
                    _newRow = new TableRow();
                    tablePreMatricula.Rows.Add(_newRow);
                    _newCell = new TableCell();
                    _newCell.Width = 200;
                    _newCell.HorizontalAlign = HorizontalAlign.Left;
                    _newCell.BorderWidth = 1;
                    _newRow.Cells.Add(_newCell);
                    _newLabel = new Label();
                    _newLabel.Text = "<b>" + misSecciones.Materia.Nombre + "</b><br />" + 
                                        misSecciones.Profesor.Nombre + "&nbsp" + misSecciones.Profesor.Apellido;
                    _newCell.Controls.Add(_newLabel);
                    LoadCells(misSecciones);
                    if (misSecciones.ListaPractica != null)// || (misSecciones.ListaPractica.Count > 0))
                    {
                        foreach (Practica miPractica in misSecciones.ListaPractica)
                        {
                            LoadPractices(miPractica);
                        }
                    }
                }
            }

            protected void Page_Load(object sender, EventArgs e)
            {
                InitSecure();
                _estudianteActual.PreMatriculaModificable = new HorarioPreMatricula();
                _diasSemana = new List<string>();
                labelEstudiante.Text = _estudianteActual.Nombre + "&nbsp" + _estudianteActual.Apellido;
                _idPreMatriculaSelected = Convert.ToInt32(Request.QueryString["cod"]);
                foreach (HorarioPreMatricula miPreMatriculaSelected in _estudianteActual.ListaHorarioPreMatricula)
                {
                    if (miPreMatriculaSelected.Codigo == _idPreMatriculaSelected)
                    {
                        labelOperationStatus.Text = "Horario:&nbsp;" +  miPreMatriculaSelected.Nombre;
                        LoadRows(miPreMatriculaSelected);
                    }
                }
            }

            protected void btnModifyPreMatricula_Click(object sender, EventArgs e)
            {
                _estudianteActual.PageCounter = 1;
                _estudianteActual.SecuenceCounter = 1;
                Session["rol"] = "Estudiante";
                _estudianteActual.AsignarPreMatriculaModificable(_idPreMatriculaSelected);
                Response.Redirect("addMateriasPreMatricula.aspx");
            }

            protected void btnBackPreMatricula_Click(object sender, EventArgs e)
            {
                Session["rol"] = "Estudiante";
                Response.Redirect("indexPreMatricula.aspx");
            }

            protected void btnBackPreMatriculaV2_Click(object sender, EventArgs e)
            {
                Session["rol"] = "Estudiante";
                Response.Redirect("indexPreMatricula.aspx");
            }

        #endregion FinMetodos
    }
}